// pages/upload/index.js
var app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 仅限图片上传
    imageArr: [],
    urlArr: [],
    // 图片和视频上传
    accessoryMedia: [], //附件媒体 真实上传的文件
    accessoryFile: [],  // 附件文件 真实上传的文件
    mediaArr: [], // 缓存区间
    prevMedia: [], // 预览地址
    accessoryArr: [],
    deleteIds: [], // 被删除的数组 
    chooesVideo: '',    //上传视频地址
    tipHide: false,
    chooseTypeHide: true,
    // 文件上传和下载
    fileArr: []
  },

  clickTest(){
    console.log('点击触发')
  },
  // 仅上传文件
  test(e) {
    wx.chooseMessageFile({
      count: 1, // 最多选取的数量
      type: 'file', // all 所有文件选择， video, image, file
      success: async res => {
        const tempFiles = res.tempFiles;  // 文件的临时路径
        console.log(tempFiles[0].path);
        wx.uploadFile({
          url: 'http://192.168.28.93:8040/WeChat/upload', //仅为示例，非真实的接口地址
          filePath: tempFiles[0].path,
          name: 'file',
          formData: {
            'user': 'test'
          },
          success(res) {
            const data = JSON.parse(res.data);
            console.log(data, '上传之后的返回值')
            //do something
          },
          complete(res) {
            console.log(res)
          },
          fail(res) {
            console.log(res)
          }
        })
        // 可以进行上传
        let fileArr = this.data.fileArr;
        fileArr.push(tempFiles[0])
        this.setData({
          fileArr,
        })
        console.log(tempFiles)
      },
      fail: err => {
        console.log(err);
      }
    });

    console.log(e, '测试')
  },
  // 仅上传图片
  image(e) {
    let { imageArr, urlArr } = this.data
    let temp = null;
    wx.chooseImage({
      sourceType: ['album'], //从相册选择
      sizeType: ['original', 'compressed'], // 所选的图片的尺寸
      success: async res => {
        const tempFiles = res.tempFiles; // 图片的路径
        console.log(tempFiles);
        temp = imageArr.concat(tempFiles)
        urlArr = temp.map((item) => {
          item = item.path
          return item
        })
        this.setData({
          imageArr: temp,
          urlArr
        })
        console.log(this.data, '为什么呢')
        // 可以进行上传
      },
      fail: function (err) {
        console.log("调用本地相册文件出错");
        console.warn(err);
      }
    });

  },
  // 图片预览
  prewImg(e) {
    let currentUrl = e.currentTarget.dataset.path
    let { urlArr } = this.data
    wx.previewImage({
      current: currentUrl, // 当前显示图片的http链接
      urls: urlArr // 需要预览的图片http链接列表
    })
    console.log(e, '是否获取到了链接')
  },
  // 删除图片
  deletePicBtn(e) {
    // 获取图片索引
    let i = e.target.id
    let urlArr = this.data.urlArr;
    let imageArr = this.data.imageArr;
    console.log(i)
    // 这里可能要更新进删除的数组
    urlArr.splice(i, 1);
    imageArr.splice(i, 1);
    this.setData({
      urlArr: urlArr,
      imageArr: imageArr
    })
    console.log(this.data.urlArr, '点中了吧')
    // 删除展示的img
  },
  // 视频上传
  video() {
    wx.chooseVideo({
      maxDuration: 30,
      success: function (res) {

        // 这个就是最终拍摄视频的临时路径了
        console.log(res, '上传路径')
      },
      fail: function () {
        console.error("获取本地视频时出错");
      }
    })
  },

  // 获取缩略图的
  carama() {
    let { mediaArr, prevMedia } = this.data
    let that = this;
    wx.chooseMedia({
      count: 1,
      mediaType: ['image', 'video'],
      sourceType: ['album', 'camera'],
      maxDuration: 30,
      camera: 'back',
      success: res => {
        console.log(res, '返回数据类型')
        let tempFilePaths = res.tempFiles
        console.log(tempFilePaths[0], '上传路径')
        // 拼装数据
        // 组装原始数据
        let tempArr = res.tempFiles
        if (res.type == 'image') {
          tempArr.forEach((item) => {
            item.prePath = item.tempFilePath
            item.type = 'image'
          })
        } else {
          tempArr.forEach((item) => {
            item.prePath = item.thumbTempFilePath
            item.type = 'video'
          })
        }
        tempArr = mediaArr.concat(tempArr)
        // 组装预览数据
        prevMedia = [];
        tempArr.forEach((item) => {
          let obj = {}
          obj.url = item.tempFilePath;
          obj.type = item.type;
          prevMedia.push(obj)
        })
        //上传图片
        wx.uploadFile({
          url: 'http://192.168.28.93:8040/WeChat/upload', //仅为示例，非真实的接口地址
          filePath: tempFilePaths[0].tempFilePath,
          name: 'file',
          formData: {
            'user': 'test'
          },
          success(res) {
            const data = JSON.parse(res.data);
            if (data.code == '200') {
              
              that.data.accessoryMedia.push(data.data);
              console.log(data, '上传之后的返回值')
              //do something 成功再更新
              that.setData({
                mediaArr: tempArr,
                prevMedia,
              })
            }else{

            }

          },
          complete(res) {
            console.log(res)
          },
          fail(res) {
            console.log(res)
          }
        })


        console.log(res, '返回路径')
        console.log(tempArr, prevMedia, '更新后数据')

      }
    })
  },
  deleteMediaBtn(e) {
    console.log(e)
    let i = e.target.id
    let prevMedia = this.data.prevMedia;
    let mediaArr = this.data.mediaArr;
    let accessoryMedia = this.data.accessoryMedia
    console.log(i)
    // 这里可能要更新进删除的数组
    if (accessoryMedia[i].fileId) {
      this.data.deleteIds.push(accessoryMedia[i].fileId);
    }
    accessoryMedia.splice(i,1);
    prevMedia.splice(i, 1);
    mediaArr.splice(i, 1);
    this.setData({
      prevMedia,
      mediaArr
    })
  },
  // 过滤新数据

  // 图片和视频预览
  prewMedia(e) {
    let current = Number(e.target.id)
    console.log(current);
    let { prevMedia } = this.data
    wx.previewMedia({
      current: current, // 当前显示图片的http链接
      sources: prevMedia,// 需要预览的图片http链接列表
      success: (res) => {
        console.log('调用成功', res)
      },
      fail: (res) => {
        console.log('调用成功', res);
      }
    })
    console.log(e, '点击上传视频文件')
  },
  // 视频预览
  bindVideoScreenChange(e) {
    var status = e.detail.fullScreen;
    var play = {
      playVideo: false
    }
    if (status) {
      play.playVideo = true;
    } else {
      this.videoContext.pause();
    }
    this.setData(play);
  },
  // 提交参数测试
  submit() {
    // 合并文件区和图片视频区上传
    // 文件要超出隐藏 点击预览
    console.log(this.data.accessoryMedia)
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.videoContext = wx.createVideoContext('prew_video'); // 这是？
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})